﻿#pragma once
#include "zyCtrol.h"

namespace BlackMoonUI {
	struct 黑月IP地址 {
		BYTE D段;
		BYTE C段;
		BYTE B段;
		BYTE A段;
	};
	class zyIPAddress : public  zyCtrol
	{
	public:
		
		zyIPAddress();
		~zyIPAddress();
		
		static LRESULT WINAPI zyIPAddress_ChildWndProc(zyObject* obj, HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, BOOL* bHandle);

		BOOL 创建(HWND 参数_父窗口, const std::wstring& 参数_标题 = L"", POINT 参数_位置 = POINT{ 0, 0 }, POINT 参数_尺寸 = POINT{ 60, 120 },
			int 参数_ID = 0, int 参数_窗口风格 = 0, int 参数_扩展风格 = 0);
		BOOL 创建(zyWindow& 参数_父窗口, const std::wstring& 参数_标题 = L"", POINT 参数_位置 = POINT{ 0, 0 }, POINT 参数_尺寸 = POINT{ 60, 120 },
			int 参数_ID = 0, int 参数_窗口风格 = 0, int 参数_扩展风格 = 0);
		bool 置地址(黑月IP地址& 参数_地址);
		黑月IP地址 取地址();
		std::wstring 取地址文本();
		bool 置地址文本(const std::wstring& 参数_IP地址文本);
		bool 清空();
		bool 是否空地址();
		bool 置焦点位置(int 参数_IP段位置);
		bool 置IP范围(int 参数_IP段位置, byte 参数_最低值, byte 参数_最高值);
		//@备注 函数 整型 OnFieldChanged(HWND hWnd,整数型 IP段位置,整数型 该段值)
		void 事件_段位置被改变(TRegEvent* 参数_事件指针) { SetRegEvent(L"OnFieldChanged", 参数_事件指针); }
	protected:
		UINT _IP地址到整数(黑月IP地址& 参数_地址);
		黑月IP地址 _整数到IP地址(int address);
		std::wstring _IP地址到文本(黑月IP地址& 参数_IP地址);
		黑月IP地址 _文本到IP地址(const std::wstring& 参数_IP地址文本);
		std::vector<std::wstring> splitString(const std::wstring& str, wchar_t delimiter);
	};

}

